1669E - 2-Letter Strings - CodeForces Solution


data structures math strings *1200

Please click on ads to support us..

Python Code:

from collections import defaultdict

t=int(input())
for _ in range(t):
    n=int(input())
    d=defaultdict(int)
    f=defaultdict(int)
    sec=defaultdict(int)
    s=set([])
    for i in range(n):
        x=input().strip()
        d[x]+=1
        f[x[0]]+=1 
        sec[x[1]]+=1 
        s.add(x)
    ans=0
    for i in 'abcdefghijk':
        ans+=f[i]*(f[i]-1)//2
        ans+=sec[i]*(sec[i]-1)//2
    for i in s:
        ans-=d[i]*(d[i]-1)
    print(ans)

C++ Code:

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define ll long long
#define pb push_back
#define fr(a,b) for(int i = a; i < b; i++)
#define rep(i,a,b) for(int i = a; i < b; i++)
#define mod 1000000007
#define inf (1LL<<60)
#define all(x) (x).begin(), (x).end()
#define prDouble(x) cout << fixed << setprecision(10) << x
#define triplet pair<ll,pair<ll,ll>>
#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL)
using namespace std;
using namespace __gnu_pbds;
typedef tree<int,null_type,greater_equal<int>,rb_tree_tag,tree_order_statistics_node_update>ordered_set;//find by order // order of key
int main(){
    fast_io;
    int t;cin>>t;
    while(t--){
        ll n;cin>>n;
        vector<string> str(n);
        map<string,int>mp;
        map<char,int>st,end;
        for(int i=0;i<n;i++){
            cin>>str[i];
        }
        ll cnt =0;
        for(int i=0;i<n;i++){
            cnt+=st[str[i][0]]+end[str[i][1]]-2*mp[str[i]];
            mp[str[i]]++;
            st[str[i][0]]++;
            end[str[i][1]]++;
        }
        cout<<cnt<<endl;
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

1323B - Count Subrectangles
991C - Candies
1463A - Dungeon
1671D - Insert a Progression
1671A - String Building
1671B - Consecutive Points Segment
1671C - Dolce Vita
1669G - Fall Down
4D - Mysterious Present
1316B - String Modification
1204A - BowWow and the Timetable
508B - Anton and currency you all know
1672A - Log Chopping
300A - Array
48D - Permutations
677C - Vanya and Label
1583B - Omkar and Heavenly Tree
1703C - Cypher
1511C - Yet Another Card Deck
1698A - XOR Mixup
1702E - Split Into Two Sets
1703B - ICPC Balloons
1702F - Equate Multisets
1700A - Optimal Path
665C - Simple Strings
1708A - Difference Operations
1703E - Mirror Grid
1042A - Benches
1676B - Equal Candies
1705B - Mark the Dust Sweeper